/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package EA_Model.IEC61970.Generation.Production.impl;

import EA_Model.IEC61970.Core.impl.IdentifiedObjectImpl;

import EA_Model.IEC61970.Domain.ActivePower;
import EA_Model.IEC61970.Domain.PU;
import EA_Model.IEC61970.Domain.PerCent;

import EA_Model.IEC61970.Generation.Production.CostPerHeatUnit;
import EA_Model.IEC61970.Generation.Production.FossilFuel;
import EA_Model.IEC61970.Generation.Production.FuelType;
import EA_Model.IEC61970.Generation.Production.ProductionPackage;

import org.eclipse.emf.common.notify.Notification;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;

import org.eclipse.emf.ecore.impl.ENotificationImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Fossil Fuel</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.FossilFuelImpl#getFossilFuelType <em>Fossil Fuel Type</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.FossilFuelImpl#getFuelCost <em>Fuel Cost</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.FossilFuelImpl#getFuelDispatchCost <em>Fuel Dispatch Cost</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.FossilFuelImpl#getFuelEffFactor <em>Fuel Eff Factor</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.FossilFuelImpl#getFuelHandlingCost <em>Fuel Handling Cost</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.FossilFuelImpl#getFuelHeatContent <em>Fuel Heat Content</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.FossilFuelImpl#getFuelMixture <em>Fuel Mixture</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.FossilFuelImpl#getFuelSulfur <em>Fuel Sulfur</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.FossilFuelImpl#getHighBreakpointP <em>High Breakpoint P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.impl.FossilFuelImpl#getLowBreakpointP <em>Low Breakpoint P</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class FossilFuelImpl extends IdentifiedObjectImpl implements FossilFuel {
	/**
	 * The default value of the '{@link #getFossilFuelType() <em>Fossil Fuel Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getFossilFuelType()
	 * @generated
	 * @ordered
	 */
	protected static final FuelType FOSSIL_FUEL_TYPE_EDEFAULT = FuelType.COAL;

	/**
	 * The cached value of the '{@link #getFossilFuelType() <em>Fossil Fuel Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getFossilFuelType()
	 * @generated
	 * @ordered
	 */
	protected FuelType fossilFuelType = FOSSIL_FUEL_TYPE_EDEFAULT;

	/**
	 * The cached value of the '{@link #getFuelCost() <em>Fuel Cost</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getFuelCost()
	 * @generated
	 * @ordered
	 */
	protected CostPerHeatUnit fuelCost;

	/**
	 * The cached value of the '{@link #getFuelDispatchCost() <em>Fuel Dispatch Cost</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getFuelDispatchCost()
	 * @generated
	 * @ordered
	 */
	protected CostPerHeatUnit fuelDispatchCost;

	/**
	 * The cached value of the '{@link #getFuelEffFactor() <em>Fuel Eff Factor</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getFuelEffFactor()
	 * @generated
	 * @ordered
	 */
	protected PU fuelEffFactor;

	/**
	 * The cached value of the '{@link #getFuelHandlingCost() <em>Fuel Handling Cost</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getFuelHandlingCost()
	 * @generated
	 * @ordered
	 */
	protected CostPerHeatUnit fuelHandlingCost;

	/**
	 * The cached value of the '{@link #getFuelHeatContent() <em>Fuel Heat Content</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getFuelHeatContent()
	 * @generated
	 * @ordered
	 */
	protected EA_Model.IEC61970.Domain.Float fuelHeatContent;

	/**
	 * The cached value of the '{@link #getFuelMixture() <em>Fuel Mixture</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getFuelMixture()
	 * @generated
	 * @ordered
	 */
	protected PerCent fuelMixture;

	/**
	 * The cached value of the '{@link #getFuelSulfur() <em>Fuel Sulfur</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getFuelSulfur()
	 * @generated
	 * @ordered
	 */
	protected PU fuelSulfur;

	/**
	 * The cached value of the '{@link #getHighBreakpointP() <em>High Breakpoint P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getHighBreakpointP()
	 * @generated
	 * @ordered
	 */
	protected ActivePower highBreakpointP;

	/**
	 * The cached value of the '{@link #getLowBreakpointP() <em>Low Breakpoint P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLowBreakpointP()
	 * @generated
	 * @ordered
	 */
	protected ActivePower lowBreakpointP;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected FossilFuelImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return ProductionPackage.Literals.FOSSIL_FUEL;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public FuelType getFossilFuelType() {
		return fossilFuelType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setFossilFuelType(FuelType newFossilFuelType) {
		FuelType oldFossilFuelType = fossilFuelType;
		fossilFuelType = newFossilFuelType == null ? FOSSIL_FUEL_TYPE_EDEFAULT : newFossilFuelType;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.FOSSIL_FUEL__FOSSIL_FUEL_TYPE, oldFossilFuelType, fossilFuelType));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public CostPerHeatUnit getFuelCost() {
		if (fuelCost != null && fuelCost.eIsProxy()) {
			InternalEObject oldFuelCost = (InternalEObject)fuelCost;
			fuelCost = (CostPerHeatUnit)eResolveProxy(oldFuelCost);
			if (fuelCost != oldFuelCost) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.FOSSIL_FUEL__FUEL_COST, oldFuelCost, fuelCost));
			}
		}
		return fuelCost;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public CostPerHeatUnit basicGetFuelCost() {
		return fuelCost;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setFuelCost(CostPerHeatUnit newFuelCost) {
		CostPerHeatUnit oldFuelCost = fuelCost;
		fuelCost = newFuelCost;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.FOSSIL_FUEL__FUEL_COST, oldFuelCost, fuelCost));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public CostPerHeatUnit getFuelDispatchCost() {
		if (fuelDispatchCost != null && fuelDispatchCost.eIsProxy()) {
			InternalEObject oldFuelDispatchCost = (InternalEObject)fuelDispatchCost;
			fuelDispatchCost = (CostPerHeatUnit)eResolveProxy(oldFuelDispatchCost);
			if (fuelDispatchCost != oldFuelDispatchCost) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.FOSSIL_FUEL__FUEL_DISPATCH_COST, oldFuelDispatchCost, fuelDispatchCost));
			}
		}
		return fuelDispatchCost;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public CostPerHeatUnit basicGetFuelDispatchCost() {
		return fuelDispatchCost;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setFuelDispatchCost(CostPerHeatUnit newFuelDispatchCost) {
		CostPerHeatUnit oldFuelDispatchCost = fuelDispatchCost;
		fuelDispatchCost = newFuelDispatchCost;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.FOSSIL_FUEL__FUEL_DISPATCH_COST, oldFuelDispatchCost, fuelDispatchCost));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PU getFuelEffFactor() {
		if (fuelEffFactor != null && fuelEffFactor.eIsProxy()) {
			InternalEObject oldFuelEffFactor = (InternalEObject)fuelEffFactor;
			fuelEffFactor = (PU)eResolveProxy(oldFuelEffFactor);
			if (fuelEffFactor != oldFuelEffFactor) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.FOSSIL_FUEL__FUEL_EFF_FACTOR, oldFuelEffFactor, fuelEffFactor));
			}
		}
		return fuelEffFactor;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PU basicGetFuelEffFactor() {
		return fuelEffFactor;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setFuelEffFactor(PU newFuelEffFactor) {
		PU oldFuelEffFactor = fuelEffFactor;
		fuelEffFactor = newFuelEffFactor;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.FOSSIL_FUEL__FUEL_EFF_FACTOR, oldFuelEffFactor, fuelEffFactor));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public CostPerHeatUnit getFuelHandlingCost() {
		if (fuelHandlingCost != null && fuelHandlingCost.eIsProxy()) {
			InternalEObject oldFuelHandlingCost = (InternalEObject)fuelHandlingCost;
			fuelHandlingCost = (CostPerHeatUnit)eResolveProxy(oldFuelHandlingCost);
			if (fuelHandlingCost != oldFuelHandlingCost) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.FOSSIL_FUEL__FUEL_HANDLING_COST, oldFuelHandlingCost, fuelHandlingCost));
			}
		}
		return fuelHandlingCost;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public CostPerHeatUnit basicGetFuelHandlingCost() {
		return fuelHandlingCost;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setFuelHandlingCost(CostPerHeatUnit newFuelHandlingCost) {
		CostPerHeatUnit oldFuelHandlingCost = fuelHandlingCost;
		fuelHandlingCost = newFuelHandlingCost;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.FOSSIL_FUEL__FUEL_HANDLING_COST, oldFuelHandlingCost, fuelHandlingCost));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Float getFuelHeatContent() {
		if (fuelHeatContent != null && fuelHeatContent.eIsProxy()) {
			InternalEObject oldFuelHeatContent = (InternalEObject)fuelHeatContent;
			fuelHeatContent = (EA_Model.IEC61970.Domain.Float)eResolveProxy(oldFuelHeatContent);
			if (fuelHeatContent != oldFuelHeatContent) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.FOSSIL_FUEL__FUEL_HEAT_CONTENT, oldFuelHeatContent, fuelHeatContent));
			}
		}
		return fuelHeatContent;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Float basicGetFuelHeatContent() {
		return fuelHeatContent;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setFuelHeatContent(EA_Model.IEC61970.Domain.Float newFuelHeatContent) {
		EA_Model.IEC61970.Domain.Float oldFuelHeatContent = fuelHeatContent;
		fuelHeatContent = newFuelHeatContent;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.FOSSIL_FUEL__FUEL_HEAT_CONTENT, oldFuelHeatContent, fuelHeatContent));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PerCent getFuelMixture() {
		if (fuelMixture != null && fuelMixture.eIsProxy()) {
			InternalEObject oldFuelMixture = (InternalEObject)fuelMixture;
			fuelMixture = (PerCent)eResolveProxy(oldFuelMixture);
			if (fuelMixture != oldFuelMixture) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.FOSSIL_FUEL__FUEL_MIXTURE, oldFuelMixture, fuelMixture));
			}
		}
		return fuelMixture;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PerCent basicGetFuelMixture() {
		return fuelMixture;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setFuelMixture(PerCent newFuelMixture) {
		PerCent oldFuelMixture = fuelMixture;
		fuelMixture = newFuelMixture;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.FOSSIL_FUEL__FUEL_MIXTURE, oldFuelMixture, fuelMixture));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PU getFuelSulfur() {
		if (fuelSulfur != null && fuelSulfur.eIsProxy()) {
			InternalEObject oldFuelSulfur = (InternalEObject)fuelSulfur;
			fuelSulfur = (PU)eResolveProxy(oldFuelSulfur);
			if (fuelSulfur != oldFuelSulfur) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.FOSSIL_FUEL__FUEL_SULFUR, oldFuelSulfur, fuelSulfur));
			}
		}
		return fuelSulfur;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PU basicGetFuelSulfur() {
		return fuelSulfur;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setFuelSulfur(PU newFuelSulfur) {
		PU oldFuelSulfur = fuelSulfur;
		fuelSulfur = newFuelSulfur;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.FOSSIL_FUEL__FUEL_SULFUR, oldFuelSulfur, fuelSulfur));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getHighBreakpointP() {
		if (highBreakpointP != null && highBreakpointP.eIsProxy()) {
			InternalEObject oldHighBreakpointP = (InternalEObject)highBreakpointP;
			highBreakpointP = (ActivePower)eResolveProxy(oldHighBreakpointP);
			if (highBreakpointP != oldHighBreakpointP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.FOSSIL_FUEL__HIGH_BREAKPOINT_P, oldHighBreakpointP, highBreakpointP));
			}
		}
		return highBreakpointP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetHighBreakpointP() {
		return highBreakpointP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setHighBreakpointP(ActivePower newHighBreakpointP) {
		ActivePower oldHighBreakpointP = highBreakpointP;
		highBreakpointP = newHighBreakpointP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.FOSSIL_FUEL__HIGH_BREAKPOINT_P, oldHighBreakpointP, highBreakpointP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getLowBreakpointP() {
		if (lowBreakpointP != null && lowBreakpointP.eIsProxy()) {
			InternalEObject oldLowBreakpointP = (InternalEObject)lowBreakpointP;
			lowBreakpointP = (ActivePower)eResolveProxy(oldLowBreakpointP);
			if (lowBreakpointP != oldLowBreakpointP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProductionPackage.FOSSIL_FUEL__LOW_BREAKPOINT_P, oldLowBreakpointP, lowBreakpointP));
			}
		}
		return lowBreakpointP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetLowBreakpointP() {
		return lowBreakpointP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLowBreakpointP(ActivePower newLowBreakpointP) {
		ActivePower oldLowBreakpointP = lowBreakpointP;
		lowBreakpointP = newLowBreakpointP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, ProductionPackage.FOSSIL_FUEL__LOW_BREAKPOINT_P, oldLowBreakpointP, lowBreakpointP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object eGet(int featureID, boolean resolve, boolean coreType) {
		switch (featureID) {
			case ProductionPackage.FOSSIL_FUEL__FOSSIL_FUEL_TYPE:
				return getFossilFuelType();
			case ProductionPackage.FOSSIL_FUEL__FUEL_COST:
				if (resolve) return getFuelCost();
				return basicGetFuelCost();
			case ProductionPackage.FOSSIL_FUEL__FUEL_DISPATCH_COST:
				if (resolve) return getFuelDispatchCost();
				return basicGetFuelDispatchCost();
			case ProductionPackage.FOSSIL_FUEL__FUEL_EFF_FACTOR:
				if (resolve) return getFuelEffFactor();
				return basicGetFuelEffFactor();
			case ProductionPackage.FOSSIL_FUEL__FUEL_HANDLING_COST:
				if (resolve) return getFuelHandlingCost();
				return basicGetFuelHandlingCost();
			case ProductionPackage.FOSSIL_FUEL__FUEL_HEAT_CONTENT:
				if (resolve) return getFuelHeatContent();
				return basicGetFuelHeatContent();
			case ProductionPackage.FOSSIL_FUEL__FUEL_MIXTURE:
				if (resolve) return getFuelMixture();
				return basicGetFuelMixture();
			case ProductionPackage.FOSSIL_FUEL__FUEL_SULFUR:
				if (resolve) return getFuelSulfur();
				return basicGetFuelSulfur();
			case ProductionPackage.FOSSIL_FUEL__HIGH_BREAKPOINT_P:
				if (resolve) return getHighBreakpointP();
				return basicGetHighBreakpointP();
			case ProductionPackage.FOSSIL_FUEL__LOW_BREAKPOINT_P:
				if (resolve) return getLowBreakpointP();
				return basicGetLowBreakpointP();
		}
		return super.eGet(featureID, resolve, coreType);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eSet(int featureID, Object newValue) {
		switch (featureID) {
			case ProductionPackage.FOSSIL_FUEL__FOSSIL_FUEL_TYPE:
				setFossilFuelType((FuelType)newValue);
				return;
			case ProductionPackage.FOSSIL_FUEL__FUEL_COST:
				setFuelCost((CostPerHeatUnit)newValue);
				return;
			case ProductionPackage.FOSSIL_FUEL__FUEL_DISPATCH_COST:
				setFuelDispatchCost((CostPerHeatUnit)newValue);
				return;
			case ProductionPackage.FOSSIL_FUEL__FUEL_EFF_FACTOR:
				setFuelEffFactor((PU)newValue);
				return;
			case ProductionPackage.FOSSIL_FUEL__FUEL_HANDLING_COST:
				setFuelHandlingCost((CostPerHeatUnit)newValue);
				return;
			case ProductionPackage.FOSSIL_FUEL__FUEL_HEAT_CONTENT:
				setFuelHeatContent((EA_Model.IEC61970.Domain.Float)newValue);
				return;
			case ProductionPackage.FOSSIL_FUEL__FUEL_MIXTURE:
				setFuelMixture((PerCent)newValue);
				return;
			case ProductionPackage.FOSSIL_FUEL__FUEL_SULFUR:
				setFuelSulfur((PU)newValue);
				return;
			case ProductionPackage.FOSSIL_FUEL__HIGH_BREAKPOINT_P:
				setHighBreakpointP((ActivePower)newValue);
				return;
			case ProductionPackage.FOSSIL_FUEL__LOW_BREAKPOINT_P:
				setLowBreakpointP((ActivePower)newValue);
				return;
		}
		super.eSet(featureID, newValue);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eUnset(int featureID) {
		switch (featureID) {
			case ProductionPackage.FOSSIL_FUEL__FOSSIL_FUEL_TYPE:
				setFossilFuelType(FOSSIL_FUEL_TYPE_EDEFAULT);
				return;
			case ProductionPackage.FOSSIL_FUEL__FUEL_COST:
				setFuelCost((CostPerHeatUnit)null);
				return;
			case ProductionPackage.FOSSIL_FUEL__FUEL_DISPATCH_COST:
				setFuelDispatchCost((CostPerHeatUnit)null);
				return;
			case ProductionPackage.FOSSIL_FUEL__FUEL_EFF_FACTOR:
				setFuelEffFactor((PU)null);
				return;
			case ProductionPackage.FOSSIL_FUEL__FUEL_HANDLING_COST:
				setFuelHandlingCost((CostPerHeatUnit)null);
				return;
			case ProductionPackage.FOSSIL_FUEL__FUEL_HEAT_CONTENT:
				setFuelHeatContent((EA_Model.IEC61970.Domain.Float)null);
				return;
			case ProductionPackage.FOSSIL_FUEL__FUEL_MIXTURE:
				setFuelMixture((PerCent)null);
				return;
			case ProductionPackage.FOSSIL_FUEL__FUEL_SULFUR:
				setFuelSulfur((PU)null);
				return;
			case ProductionPackage.FOSSIL_FUEL__HIGH_BREAKPOINT_P:
				setHighBreakpointP((ActivePower)null);
				return;
			case ProductionPackage.FOSSIL_FUEL__LOW_BREAKPOINT_P:
				setLowBreakpointP((ActivePower)null);
				return;
		}
		super.eUnset(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean eIsSet(int featureID) {
		switch (featureID) {
			case ProductionPackage.FOSSIL_FUEL__FOSSIL_FUEL_TYPE:
				return fossilFuelType != FOSSIL_FUEL_TYPE_EDEFAULT;
			case ProductionPackage.FOSSIL_FUEL__FUEL_COST:
				return fuelCost != null;
			case ProductionPackage.FOSSIL_FUEL__FUEL_DISPATCH_COST:
				return fuelDispatchCost != null;
			case ProductionPackage.FOSSIL_FUEL__FUEL_EFF_FACTOR:
				return fuelEffFactor != null;
			case ProductionPackage.FOSSIL_FUEL__FUEL_HANDLING_COST:
				return fuelHandlingCost != null;
			case ProductionPackage.FOSSIL_FUEL__FUEL_HEAT_CONTENT:
				return fuelHeatContent != null;
			case ProductionPackage.FOSSIL_FUEL__FUEL_MIXTURE:
				return fuelMixture != null;
			case ProductionPackage.FOSSIL_FUEL__FUEL_SULFUR:
				return fuelSulfur != null;
			case ProductionPackage.FOSSIL_FUEL__HIGH_BREAKPOINT_P:
				return highBreakpointP != null;
			case ProductionPackage.FOSSIL_FUEL__LOW_BREAKPOINT_P:
				return lowBreakpointP != null;
		}
		return super.eIsSet(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public String toString() {
		if (eIsProxy()) return super.toString();

		StringBuffer result = new StringBuffer(super.toString());
		result.append(" (fossilFuelType: ");
		result.append(fossilFuelType);
		result.append(')');
		return result.toString();
	}

} //FossilFuelImpl
